package com.pestdetection;

import java.io.IOException;
import java.util.Map;
import java.io.File;

/**
 * 病虫害检测演示类
 * 展示如何使用训练好的模型进行病虫害检测
 * 主要功能：
 * 1. 加载模型
 * 2. 加载测试图片
 * 3. 进行检测
 * 4. 显示结果
 */
public class PestDetectionDemo {
    public static void main(String[] args) {
        try {
            // 第一步：设置模型文件路径
            String 模型路径 = "pest_detection_model.zip";
            
            // 第二步：检查模型文件是否存在
            File 模型文件 = new File(模型路径);
            if (!模型文件.exists()) {
                System.err.println("错误：模型文件不存在 - " + 模型路径);
                System.err.println("请先运行训练程序生成模型文件。");
                return;
            }
            
            // 第三步：创建检测器
            System.out.println("正在加载模型...");
            PestDetector 检测器 = new PestDetector(模型路径);
            
            // 第四步：设置要检测的图片路径
            String 测试图片路径 = "C:\\Users\\29790\\Desktop\\dy\\8ab3229540cefcf5946e13f6b3a23fb.jpg";
            
            // 第五步：检查测试图片是否存在
            File 测试图片 = new File(测试图片路径);
            if (!测试图片.exists()) {
                System.err.println("错误：测试图片不存在 - " + 测试图片路径);
                System.err.println("请确保测试图片路径正确。");
                System.err.println("当前工作目录: " + System.getProperty("user.dir"));
                return;
            }
            
            // 第六步：进行检测
            System.out.println("正在进行检测...");
            System.out.println("检测图片: " + 测试图片路径);
            
            // 获取检测结果
            PestDetector.DetectionResult 检测结果 = 检测器.detect(测试图片路径);
            // 获取所有种类的概率分布
            Map<String, Double> 所有概率 = 检测器.getAllProbabilities(测试图片路径);
            
            // 第七步：输出检测结果
            System.out.println("\n=== 病虫害检测结果 ===");
            System.out.println("图片路径: " + 测试图片路径);
            System.out.println("检测状态: " + (检测结果.hasPest() ? "发现病虫害" : "未发现病虫害"));
            System.out.println("病虫害类型: " + 检测结果.getPestType());
            System.out.println("置信度: " + String.format("%.2f%%", 检测结果.getConfidence() * 100));
            
            // 第八步：输出详细概率分布
            System.out.println("\n=== 详细概率分布 ===");
            for (Map.Entry<String, Double> 概率项 : 所有概率.entrySet()) {
                System.out.println(String.format("%s: %.2f%%", 
                    概率项.getKey(), 概率项.getValue() * 100));
            }
            
        } catch (IOException e) {
            System.err.println("检测过程中发生错误: " + e.getMessage());
            e.printStackTrace();
        }
    }
} 